main() {
  //  公鸡=5，母鸡=3，小鸡=1/3  问的是各有多少只，这个假设所有的不管什么鸡都得有。
  double gj;
  double mj;
  double xj;
  double num = 0;

  // 解法一：

  // 如果必须有一只母鸡和一只小鸡，那最多只能有 （100- 3 - 0.33333）/ 5 ≈ 19 只 （不够一只就要舍掉，不能买残疾回来）
  for (gj = 1; gj <= 19; gj++) {
    // 如果必须有一只公鸡和一只小鸡，那最多只能有 （100- 5 - 0.33333）/ 3 ≈ 31 只 （不够一只就要舍掉，不能买残疾回来）
    for (mj = 1; mj <= 31; mj++) {
      // 如果必须有一只公鸡和一只母鸡，但是最多只能买100只，那最多只能有 （100- 8）/ （1 / 3）> 100 ? 100 :（100- 8）/ （1 / 3）只
      for (xj = 1; xj <= 100; xj++) {
        // 筛选符合要求的个数
        if ((5 * gj + 3 * mj + xj / 3 == 100) && (gj + mj + xj == 100) && (xj % 3 == 0)) {
          print('公鸡有：' + gj.toString() + '只；' + '母鸡有：' + mj.toString() + '只；' + '小鸡有：' + xj.toString() + '只；');
        }
        num++;
        if (gj == 19 && mj == 31 && xj == 100) {
          print('循环执行次数：' + num.toString());
        }
      }
    }
  }

  // 解法二：

  for (gj = 0; gj <= 19; gj++) {
    for (mj = 0; mj <= 31; mj++) {
      xj = 100 - gj - mj;
      if ((5 * gj + 3 * mj + xj / 3 == 100) && (gj + mj + xj == 100) && (xj % 3 == 0)) {
        print('公鸡有：' + gj.toString() + '只；' + '母鸡有：' + mj.toString() + '只；' + '小鸡有：' + xj.toString() + '只；');
      }
      num++;
      if (gj == 19 && mj == 31 && xj == 100 - gj - mj) {
        print('循环执行次数：' + num.toString());
      }
    }
  }

  // 解法三：
  // 5*gj + 3*mj + (1/3)*xj = 100
  // 15*gj + 9*mj + 1*xj = 300
  // 15*gj + 9*mj + 1*(100 - gj - mj) = 300
  // 14*gj + 8*mj = 200
  // 7*gj + 4*mj = 100 => gj <=14
  for (gj = 1; gj <= 15; gj++) {
    mj = (100 - 7 * gj) / 4;
    xj = 100 - gj - mj;
    if ((100 - 7 * gj) % 4 == 0) {
      print('公鸡有：' + gj.toString() + '只；' + '母鸡有：' + mj.toString() + '只；' + '小鸡有：' + xj.toString() + '只；');
    }
    num++;
    if (gj == 14) {
      print('循环执行次数：' + num.toString());
    }
  }
}
